package cn.tedu.oop;
/*本类用作多态的入门案例*/
public class TestDemo {
    public static void main(String[] args) {
        Animal a=new Animal();
        Cat c=new Cat();
        a.eat();
        c.eat();
        //a.jump父类不能用子类特有方法
        c.jump();
        /*8创建多态对象进行测试
        口诀1：父类引用，指向子类对象
        口诀2 编译看左边，运行时看右边
        *多态的两个前提，继承+重写缺一不可
        *多态是父类的声明，子类的具体实现
        多态不可以调用子类特用功能，只能调用重写父类的功能
         */
        Animal a2=new Cat();
        a2.eat();
        Animal a3=new Dog();
        a3.eat();
        /*多态的出现是为了统一调用标值，向父类看齐
        父类声明的功能才能用，子类特有功能用不了，
        如果想用子类特有功能，就创建纯的子类对象
         */

    }

}
//1.创建父类
class Animal{
    //4创建小动物animal吃啥都行
    public void eat(){
        System.out.println("小动物animal吃啥都行");
    }
}
class Cat extends Animal{
    //重写eat
    public void eat(){
        System.out.println("小猫爱吃小鱼干");
    }
//    定义子类中特有方法，jump
    public void jump(){
        System.out.println("小猫跳得老高了");
    }
}
class Dog extends Animal{
    public void eat(){
        System.out.println("小狗爱吃小鱼干");
    }
}
